void rio_readinitb(rio_t *rp,int fd)
{
rp->rio_fd=fd;
rp->rio_cnt=0;
rp->rio_bufptr= rp->rio_buf;
}





ssize_t rio_read(int fd,void *usrbuf,size_t n)
{
size_t nleft = n;
ssize_t nread;
char *bufp = usrbuf;
while(nleft>0){
if((nread=read(fd,bufp,nleft))<0){
if(errno==EINTR)
nread =0;
else
return -1;
}
else if(nread==0)
break;
nleft -=nread;
bufp+=nread;
}
return(n- nleft);
}

ssize_t rio_writen(int fd,void *usrbuf,size_t n)
{
size_t nleft = n;
ssize_t nwritten ;
char *bufp= usrbuf;
while(nleft>0){
if((nwritten=write(fd,bufp,nleft))<=0){
if(errno=EINTR)
nwritten=0;
else 
return -1;
}
nleft-= nwritten;
bufp += nwritten;
}
return n;
}


